package com.demo.java.OD101_150.OD141;

import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【找出通过车辆最多颜色】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145732937
 */
public class OdMain {
    public static void main(String[] args) {
        // 创建Scanner对象用于接收用户输入
        Scanner sc = new Scanner(System.in);

        // 读取第一行输入字符串，表示需要处理的元素
        String line = sc.nextLine();

        // 读取第二行输入整数，表示滑动窗口的大小
        int count = sc.nextInt();

        // 将输入的字符串按空格分割，得到一个数组
        final String[] arr = line.split("\\s+");

        // 初始化max变量，用于存储滑动窗口内出现次数最多的元素出现次数
        int max = 0;

        // 创建一个Map，存储每个元素在滑动窗口中的出现次数
        Map<String, Integer> map = new HashMap<>();

        // 遍历输入的数组
        for (int i = 0; i < arr.length; i++) {
            // 如果当前元素的索引大于等于窗口大小，说明窗口已经滑动了，移除窗口最左边的元素
            if (i >= count) {
                String key = arr[i - count]; // 取出滑出窗口的最左边元素
                map.put(key, map.get(key) - 1); // 在map中减少该元素的计数
            }

            // 获取当前元素在map中的计数，如果没有该元素，默认值为0
            int integer = map.getOrDefault(arr[i], 0);

            // 更新当前元素的计数，map.put将更新该元素的出现次数
            map.put(arr[i], integer + 1);

            // 如果当前元素的计数超过最大值，更新max
            if (integer + 1 > max) {
                max = integer + 1;
            }
        }

        // 输出滑动窗口中出现最多的元素的次数
        System.out.println(max);
    }
}